package com.demo.file.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.demo.file.entity.SegmentFile;
import org.springframework.web.multipart.MultipartFile;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author alyy20
 * @since 2022-04-18
 */
public interface ISegmentFileService extends IService<SegmentFile> {

    /**
     * 该文件存在，返回数据
     *
     * @param key
     * @return
     */
    public SegmentFile checkFile(String key);


    /**
     * 第一次出现的文件，把数据存到数据库中
     *
     * @param originFileName
     * @param savePath       为文件夹绝对位置
     * @param size
     * @param segmentSize
     * @param key
     * @return
     */
    public boolean createFile(String originFileName, String savePath, int size, int segmentSize, String key);

    /**
     * 存储分片到服务器
     *
     * @param file
     * @param savePath
     * @param key
     * @param originFileName
     * @param segmentIndex
     * @return
     */
    public boolean saveFile(MultipartFile file, String savePath, String key, String originFileName, int segmentIndex);

    /**
     * 更新总文件的数据库信息
     *
     * @param segmentFile
     * @return
     */
    public boolean modify(SegmentFile segmentFile);

    /**
     * 将所有的分片联合成同一文件
     *
     * @param key
     * @return
     */
    public boolean mergeSegment(String key);

    /**
     * 完成合并，删除分片文件
     *
     * @param key
     * @throws InterruptedException
     */
    public void deleteSegments(String key) throws InterruptedException;

}
